緊接著,我們就要來介紹函數了!寫函數可以讓我們的程式碼更簡潔明瞭也更有效率,因此當程式碼又臭又長的時候,我們就可以靠寫函數來輔助!
函數跟斯斯一樣有兩種,一種是我們自己定義的(user-defined function),另一種是函式庫中本來就定義好的(system-defined function)。
這邊我就著重在 user-defined function,從定義函數開始!
首先,我們要先在 main function 的前面,先 declare:
括號中的參數可以有很多個,例如:
接著在main function的外面,要定義這個函數要拿來做甚麼:
something 的形態要符合我們定義這個函數的 return type,除了 void,所有的函數都需要寫 return,只要遇到return,這個函數就會停止,並回傳其值。
若一函數的 return type 是 void,就不需要寫 return,void 型態的函數是不會回傳任何東西的。
那在 C++ 中,我們只能 return 0 或 1 個變數,不過不論是什麼樣的型態中,不需要回傳陣列,陣列中的值也會隨著函數 statements 變動。
呼叫函數
引數、參數
我們會看到 parameters 與 arguments,這兩個詞從大二修統計就陰魂不散,我花了一段時間才好不容易記起來,那這兩者在程式語言中到底有何不同呢?
名稱 | 意義 |
---|---|
Parameters 參數 | 是我們在定義函數時所用的變數名稱 |
Arguments 引數 | 在呼叫函數時實際傳入的值 |
舉例來說,我們宣告一個函數:
這裡面的x、y就是parameters而當我們在呼叫此函數的時候:
實際傳入的 3、5 就是 arguments。
在學了函數之後,我們就可以按作用範圍(scope)與生命期(lifetime)分為四種變數:global variables
、local variables
、external variables
、static variables
。
但在這之前,要先知道甚麼是區塊(block):
區塊就是任何以大括號{ }包起來的區域, 如函式區塊, if區塊, for區塊。
1. Global variables
簡單來說,就是在 block 外被宣告,在 block 中被運用。
2. Local variables
與 global variables 相對,在 block 裡出生,也在 block 結束時死亡。因此,在 block 外是無法使用任何local variable 的。
3. External variables
一個根本就不在這個 program 裡面的 global variable,如果一個變數想要在別的 program 裡面也被使用,宣告此變數時需要加 extern,例如:
4. Static variables
只會在第一次定義時給初值之後再碰到此敘述時,會將其視為宣告,而不會再做初始化的動作,宣告時前面加 static,例如:
static variable可以用了數一個函數被呼叫了幾次。
以上,就是我對於函數的筆記!